// static/js/commom_req.js
// 发送请求的 js 文件
// TODO : 写灵活一些, 比如写一个 base.js, 其他位置引用 base.js 后, 进行额外处理即可.

import { showVerifyCode } from '../js/curl_input.js';


// 提交 curl_command, { '/beautify_json', '/beautify_json_page' }
function submitBeautifyJson(api_path) {
    // 获取 curl_command 的内容
    var curlCommand = document.getElementById('curl_command').value;
    console.log(curlCommand);
    // 创建一个新的表单
    var form = document.createElement('form');
    form.method = 'post';
    form.action = api_path;

    // 创建一个隐藏的 textarea 元素，包含 curl_command 的值
    var hiddenField = document.createElement('textarea');
    hiddenField.name = 'curl_command';
    hiddenField.value = curlCommand;

    // 将隐藏的 textarea 添加到表单中
    form.appendChild(hiddenField);

    // 提交前, 隐藏输入框 :
    if(form){
        // 如果不隐藏输入框, 当该方法执行后, 滑动返回页面, 页面就会出现该输入框 ,,,
        form.style.display = 'none';
    }

    // 将表单添加到文档并提交
    document.body.appendChild(form);
    form.submit();
}


// 调用接口, 接口提取 curl 数据 : { '/curl_to_table', '' }
function curlToExcel(api_path) {
    // 调用接口, 将 curl 命令传递到接口, 接口将 curl 中的数据处理成 Excel 表格数据并返回重定向 url;
    const curlCommand = document.getElementById('curl_command').value;
    var sheetName = document.getElementById('sheet_name').value;
    var caseId = document.getElementById('case_id').value;
    var apiName = document.getElementById('api_name').value;
    var model = document.getElementById('model').value;
    var caseTitle = document.getElementById('case_title').value;

    //
    fetch(api_path, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({
            curl: curlCommand,
            sheet_name: sheetName,
            case_id: caseId,
            api_name: apiName,
            case_model: model,
            case_title: caseTitle
        }),
        credentials: 'include'
    })
    .then(response => response.json())
    .then(data => {
        if (data.redirect) {
            window.location.href = data.redirect;
        } else {
            console.error('No redirect URL in response');
        }
    })
    .catch(error => console.error('Error:', error));
}


// 调用接口, 接口提取 curl 数据, 转换成 Python 脚本 (极简) : { 'curl_to_simple_py', '' }
function curlToPy(api_path){
    // 获取需要提交的字段值
    var curlCommand = document.getElementById('curl_command').value;

    // 创建一个新的表单元素
    var form = document.createElement('form');
    form.method = 'POST';
    form.action = api_path;

    // 创建并添加输入字段
    var curlInput = document.createElement('input');
    curlInput.type = 'hidden';
    curlInput.name = 'curl_command';
    curlInput.value = curlCommand;
    form.appendChild(curlInput);

    // 将表单添加到页面，并提交
    document.body.appendChild(form);
    form.submit();
}


// 提交 curl, case_id, case_name, case_model : { '/curl_to_pytest_excel', '/curl_to_gcp', '/curl_to_edc' }
function submitToPytestExcel(api_path) {
    // 获取需要提交的字段值
    var curlCommand = document.getElementById('curl_command').value;
    var sheetName = document.getElementById('sheet_name').value;
    var caseId = document.getElementById('case_id').value;
    var apiName = document.getElementById('api_name').value;
    var model = document.getElementById('model').value;
    var caseTitle = document.getElementById('case_title').value;

    // 创建一个新的表单元素
    var form = document.createElement('form');
    form.method = 'POST';
    form.action = api_path

    // 创建并添加输入字段
    var curlInput = document.createElement('input');
    curlInput.type = 'hidden';
    curlInput.name = 'curl_command';
    curlInput.value = curlCommand;
    form.appendChild(curlInput);

    var sheetNameInput = document.createElement('input');
    sheetNameInput.type = 'hidden';
    sheetNameInput.name = 'sheet_name';
    sheetNameInput.value = sheetName;
    form.appendChild(sheetNameInput);

    var caseIdInput = document.createElement('input');
    caseIdInput.type = 'hidden';
    caseIdInput.name = 'case_id';
    caseIdInput.value = caseId;
    form.appendChild(caseIdInput);

    var apiNameInput = document.createElement('input');
    apiNameInput.type = 'hidden';
    apiNameInput.name = 'api_name';
    apiNameInput.value = apiName;
    form.appendChild(apiNameInput);

    var modelInput = document.createElement('input');
    modelInput.type = 'hidden';
    modelInput.name = 'case_model';
    modelInput.value = model;
    form.appendChild(modelInput);

    var caseTitleInput = document.createElement('input');
    caseTitleInput.type = 'hidden';
    caseTitleInput.name = 'case_title';
    caseTitleInput.value = caseTitle;
    form.appendChild(caseTitleInput);

    // 将表单添加到页面，并提交
    document.body.appendChild(form);
    form.submit();
}


// 提交 python 代码,
function execute_py(api_path){
    var curlCommand = document.getElementById('curl_command').value;
    var pyCode = document.getElementById('pyCode').innerText;

    // 创建一个新的表单元素
    var form = document.createElement('form');
    form.method = 'POST';
    form.action = api_path;

    // 创建并添加输入字段
    var curlInput = document.createElement('input');
    curlInput.type = 'hidden';
    curlInput.name = 'curl_command';
    curlInput.value = curlCommand;
    form.appendChild(curlInput);

    // 创建并添加输入字段
    var pyInput = document.createElement('input');
    pyInput.type = 'hidden';
    pyInput.name = 'python_code';
    pyInput.value = pyCode;
    form.appendChild(pyInput);

    // 将表单添加到页面，并提交
    document.body.appendChild(form);
    form.submit();
}


// 获取验证码 : ( 默认获取 test 环境验证码 )
function getVerifyCode(venv=test){
    var api_path = '/get_verify_code'

    fetch(api_path,{
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({
            venv: venv
        }),
        credentials: 'include'
    })
    .then(response => response.json())
    .then(data=>{
        if(data.status === '2'){
            // 展示验证码弹框 :
            showVerifyCode(data.datas, venv)
        } else{
            console.error('获取数据失败!')
        }
    })
    .catch(error => console.error('Error', error));
}


// 失信人列表 :
function uncredited(){
    // 接口 :
    var api_path = '/card/show_idcard'

    // 自定义表单 :
    var form = document.createElement('form');
    form.method = 'post';
    form.action = api_path;

    // 将表单添加到文档并提交
    document.body.appendChild(form);
    form.submit();
}


// 失信人身份证照 :
function uncredited_pic(){
    // 接口 :
    var api_path = '/card/show_idcard_pic';

    // 自定义表单 :
    var form = document.createElement('form');
    form.method = 'post';
    form.action = api_path;

    // 将表单添加到文档并提交
    document.body.appendChild(form);
    form.submit();
}


// 脚本页 :
function view_code(){
    // 接口 :
    var api_path = '/code/codes';

    // 自定义表单 :
    var form = document.createElement('form');
    form.method = 'post';
    form.action = api_path;

    // 将表单添加到文档并提交 :
    document.body.appendChild(form);
    form.submit();
}


// 以 form 表单形式调接口 :
function form_api(api_path){
    // 自定义表单 :
    var form = document.createElement('form');
    form.method = 'post';
    form.action = api_path;

    // 将表单添加到文档并提交
    document.body.appendChild(form);
    form.submit();
}


// 样式定义
document.addEventListener('DOMContentLoaded', function () {
    document.getElementById('custom-alert').innerHTML = `
        <style>
            .custom-alert {
                position: fixed;
                top: 20px;
                right: 20px;
                z-index: 1000;
            }
            .alert-success {
                background-color: #d4edda;
                color: #155724;
                border-color: #c3e6cb;
                padding: 10px;
                border-radius: 5px;
            }
            .alert-error {
                background-color: #f8d7da;
                color: #721c24;
                border-color: #f5c6cb;
                padding: 10px;
                border-radius: 5px;
            }
        </style>
    `;
});


// 绑定到 window 对象 :
window.submitBeautifyJson = submitBeautifyJson;  // 提交美化 json
window.curlToExcel = curlToExcel;  // 提交 curl 转  Excel
window.curlToPy = curlToPy;  // 提交 curl 转 Python 脚本
window.submitToPytestExcel = submitToPytestExcel;  // 提交 curl 转 Pytest 和 Excel
window.execute_py = execute_py;  // 提交执行
window.getVerifyCode = getVerifyCode;  // 获取验证码
window.uncredited = uncredited;  // 失信人姓名身份证号列表
window.uncredited_pic = uncredited_pic;  // 失信人照片
window.view_code = view_code;  // 失信人照片
window.form_api = form_api;  // 失信人照片
